perm filename BYTE.PAS[TEX,ALS] blob
sn#576450 filedate 1981-04-01 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 (*PROGRAM HEADER PAGE*)
C00005 00003 program BYTE (input, output, file0, file1)
C00007 ENDMK
C⊗;
(*PROGRAM HEADER PAGE*)
(*PAS10 OPTIONS*) (* D+,R32,S1300*) (*X10S1*)
(* DEFAULT
D+ DEBUG AND POSTMORTEM DUMP -
E+ EXTERNAL CALLS TO LEVEL 1 PROCEDURES ALLOWED -
Fn FILE OPTION 1
I+ FORTRAN I/O IN EXTERNAL FORTRAN SUBROUTINES -
L+ OBJECT LISTING -
Rn SIZE OF LOW-SEGMENT (SEE PAS10 MANUAL)
Sn MAX INSTRUCTIONS PER STATEMENT 1000
T+ RUNTIME CHECK +
U+ 72 COLUMN FORMAT -
Xn HIGHEST REGISTER FOR PARAMETERS 6
*)
(*SLAC PCPASC OPTIONS*) (* B+,D+,M-*)
(* DEFAULT
A+ GENERATE 370 OBJECT MODULE -
A- GENERATE 370 ASSEMBLY MODULE
B+ BOUNDS CHECKING, BUT ALLOW 'BIG' CHARACTERS -
C+ EMIT PCODE +
D+ RUNTIME CHECKING OF POINTER, INDEX, SUBRANGE VALUES -
E+ FILE IS IN EBCDIC CHARACTER SET -
F+ SAVE FPR'S ON PROCEDURE/FUNCTION ENTRY +
K+ ENABLE STATEMENT EXECUTION COUNTING -
L+ LIST SOURCE PROGRAM +
M+ 72 COLUMN FORMAT +
P+ DOUBLE-WORD BOUNDARY ALIGNMENT -
S+ SAVE GPR'S ON PROCEDURE/FUNCTION ENTRY +
T+ PRINT SYMBOL TABLES (FOR POST-PROCESSOR) -
U+ GET STATISTICS?? 2ND PARAMETER TO PCODE BGN INSTR. -
V+ ?? 3RD PCODE BGN INSTRUCTION PARAMETER -
X+ USE ACTUAL PROCEDURE NAMES FOR EXTERNAL REFERENCES -
X- GENERATE UNIQUE 8-CHAR NAMES FOR EXTERNAL REFERENCES
*)
(*S1 PCPASC OPTION DIFFERENCES*) (*$A+,B+,D+,L-,M120*) (*X10S1*)
(* DEFAULT
A+ GENERATE S1 ASSEMBLY MODULE -
A- GENERATE S1 OBJECT MODULE
*)
(* SLAC/PDP-10 TRANSPORT DEPENDENCIES FLAGGED WITH "XSL10" *)
(* PDP-10/S-1 TRANSPORT DEPENDENCIES FLAGGED WITH "X10S1" *)
program BYTE (input, output, file0, file1);
type
rec = record int: integer end;
var
i,j,k,t1,t2,theta: integer;
r,x,y,z: real;
c: char;
a: packed array[-10..10, -10..10] of char;
file0, file1: packed file of char;
p1, p2, p3, p4: ↑rec;
begin
t1:=clock(1);
reset(input);
reset(file0);
rewrite(output);
rewrite(file1);
for i:=-10 to 10 do
for j:=-10 to 10 do
a[i,j]:=' ';
for theta:=-31 to 31 do
begin
r:=theta/10.0;
x:=sin(r);
y:=cos(r);
z:=arctan(x/y);
if abs(z-r) > 0.1E-6
then writeln('sin(',r,')=',x,',cos(',r,')=',y,',arctan=',z);
i:=trunc((10.0*x)+0.5);
j:=trunc((10.0*y)+0.5);
if (i>=-10)and(i<=10)and(j>=-10)and(j<=10)
then a[i,j]:='*'
else writeln('not in range: r=',r,',x=',x,',y=',y,',i=',i,',j=',j);
end;
write('circle',1,5.0);
writeln;
for i:=-10 to 10 do
writeln(a[i]);
new(p1);
mark(p2);
new(p3);
release(p2);
new(p4);
if p4 <> p3
then writeln('new and dispose don''t work')
else writeln('new and dispose ok');
output↑:= '\'; put(output);
writeln(' tested that put backslash works');
t2:=clock(1);
write(file1,'we took');
writeln(file1,t2-t1);
exit(5);
end.